package com.yz.fanrenmianshi.model.vo;

import com.yz.fanrenmianshi.model.entity.QuestionComment;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 题目评论视图
 *
 */
@Data
public class QuestionCommentVO implements Serializable {

    /**
     * id
     */
    private Long id;

    /**
     * 题目 id
     */
    private Long questionId;

    /**
     * 题目标题（临时字段，仅展示用）
     */
    private String questionTitle;

    /**
     * 内容
     */
    private String content;

    /**
     * 创建用户 id
     */
    private Long userId;

    /**
     * 父评论 id，为空则是一级评论
     */
    private Long parentId;

    /**
     * 根评论 id，为空则是一级评论
     */
    private Long rootId;

    /**
     * 回复用户 id，为空则是回复题目
     */
    private Long replyUserId;

    /**
     * 点赞数
     */
    private Integer thumbNum;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 创建用户信息
     */
    private UserVO user;

    /**
     * 回复用户信息
     */
    private UserVO replyUser;

    /**
     * 是否已点赞
     */
    private Boolean hasThumb;

    /**
     * 子评论列表
     */
    private List<QuestionCommentVO> children;

    /**
     * 封装类转对象
     *
     * @param questionCommentVO
     * @return
     */
    public static QuestionComment voToObj(QuestionCommentVO questionCommentVO) {
        if (questionCommentVO == null) {
            return null;
        }
        QuestionComment questionComment = new QuestionComment();
        BeanUtils.copyProperties(questionCommentVO, questionComment);
        return questionComment;
    }

    /**
     * 对象转封装类
     *
     * @param questionComment
     * @return
     */
    public static QuestionCommentVO objToVo(QuestionComment questionComment) {
        if (questionComment == null) {
            return null;
        }
        QuestionCommentVO questionCommentVO = new QuestionCommentVO();
        BeanUtils.copyProperties(questionComment, questionCommentVO);
        return questionCommentVO;
    }
}
